#ifndef __LS_H__
#define __LS_H__
#include "logger.hpp"

namespace log_system
{
    //获取日志器的全局接口，避免用户自己操作单例对象，简化用户使用复杂度
    Logger::ptr getLogger(const std::string& name)
    {
        return LoggerManager::getInstance()->getLogger(name);
    }

    Logger::ptr defaultLogger()
    {
        return LoggerManager::getInstance()->defaultLogger();
    }

    //使用宏函数对日志器的接口进行代理
    #define debugLog(fmt, ...) debugLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define infoLog(fmt, ...) infoLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define warnLog(fmt, ...) warnLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define errorLog(fmt, ...) errorLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
    #define fatalLog(fmt, ...) fatalLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)

    //提供宏函数，直接通过默认日志器进行日志的标准输出打印，不需要用户自己获取日志器
    #define DEBUGLOG(fmt, ...) log_system::defaultLogger()->debugLog(fmt, ##__VA_ARGS__);
    #define INFOLOG(fmt, ...) log_system::defaultLogger()->infoLog(fmt, ##__VA_ARGS__);
    #define WARNLOG(fmt, ...) log_system::defaultLogger()->warnLog(fmt, ##__VA_ARGS__);
    #define ERRORLOG(fmt, ...) log_system::defaultLogger()->errorLog(fmt, ##__VA_ARGS__);
    #define FATALLOG(fmt, ...) log_system::defaultLogger()->fatalLog(fmt, ##__VA_ARGS__);
}


#endif